package Controlador;


import java.util.LinkedList;
import java.util.List;

import org.zkoss.bind.annotation.BindingParam;
import org.zkoss.bind.annotation.Command;
import org.zkoss.bind.annotation.NotifyChange;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.Executions;
import org.zkoss.zk.ui.select.annotation.Wire;
import org.zkoss.zul.ListModelList;
import org.zkoss.zul.Listbox;
import org.zkoss.zk.ui.util.GenericForwardComposer;
import org.zkoss.zul.Button;
import org.zkoss.zul.Datebox;
import org.zkoss.zul.ListModel;
import org.zkoss.zul.Messagebox;
import org.zkoss.zul.Textbox;
import org.zkoss.zul.Window;

import Modelos.datos.Inventario;
import Modelos.datos.Orden;
import Modelos.datos.Producto;


public class ControladorOrdenEntrada extends GenericForwardComposer<Component>{
	
		
		private static final long serialVersionUID = 1L;
		final Inventario inv = Inventario.getInstancia();
		Orden ord = new Orden();
		Producto prod=new Producto();
		
		@Wire
		private Button btnCancelar;
		@Wire
		private Button btnAceptar;
		@Wire
		private Button btnAgregar;
		@Wire
		private Button btnEliminar;
		@Wire
		private Button btnAgregarTodo;
		@Wire
		private Button btnEliminarTodo;
		@Wire
		private Listbox OrdenXProd;
		@Wire
		private Listbox ListadoClase;
		@Wire
		private Textbox codigo;
		@Wire
		private Datebox fechaPedido;
		
		public List<Producto> ListadoProdXOrden= new  LinkedList<Producto>();
		public List<Producto> productosClase= Inventario.getInstancia().getProductos();
		
<<<<<<< .mine
		
		public void ControladorOrdenEntrada(){	 
			OrdenXProd.setModel(new ListModelList<Producto>(ListadoProdXOrden));
=======
		public ControladorOrdenEntrada(){
	
			//OrdenXProd.setModel(new ListModelList<Producto>(ListadoProdXOrden));
>>>>>>> .r14
		}
		
		public ListModel<Producto> getProductosLista()
		{
			//return new ListModelList<Producto>(Inventario.getProductos());
			return new ListModelList<Producto>(productosClase);
		}
		
		public ListModel<Producto> getProductosLista2()
		{
			//return new ListModelList<Producto>(Inventario.getProductos());
			return new ListModelList<Producto>(ListadoProdXOrden);
		}
	
		public void onClick$btnAceptar(){
			
			if(codigo.getValue().equals("") || fechaPedido.getValue().equals("") 
				|| productosClase.size()==0)
			{
				Messagebox.show("Existen campos vacios", "Error", Messagebox.OK, Messagebox.ERROR);
				
			}else{
				ord.setCodigo(codigo.getValue());
				ord.setFecha(fechaPedido.getValue());
				for(int i=0, j=ListadoProdXOrden.size(); i<=j;i++)
				{
				  int cant= ListadoProdXOrden.get(i).getCantidad();
				  String nom= ListadoProdXOrden.get(i).getNombre();
				  	prod.setCantidad(cant);
				  	prod.setNombre(nom);
				  	ord.agregarProductosOrden(prod);
				}
				inv.agregarOrdenEntrada(ord);
				
				Messagebox.show("Se ha almacenado con exito", "Informacion", Messagebox.OK, Messagebox.INFORMATION);
			}
				  
		}
		
		public void onClick$btnCancelar(){
			
			Window  inicio= (Window)Executions.createComponents("menu.zul",null,null);
	 		inicio.doModal();
		}
		
		
	/*	public void onClick$btnAgregar(){
            Events.postEvent(new ChooseEvent(this, unchoseOne()));
		}
		
		public class ChooseEvent extends Event{
			
			private static final long serialVersionUID= -7334906383953342976L;
			
			public ChooseEvent(ControladorOrdenEntrada controladorOrdenEntrada,
					Object unchoseOne) {
				// TODO Auto-generated constructor stub
			}*/	
		
		private Object unchoseOne() {
			// TODO Auto-generated method stub
			return null;
		}

		public void onClick$btnEliminar(){
			Producto prod= OrdenXProd.getSelectedItem().getValue();
			productosClase.add(prod);
			ListadoProdXOrden.remove(prod);
		}
	
		public void onClick$btnAgregar(){
			//System.out.println(ListadoClase.getSelectedItem().getValue());
			Producto prod= ListadoClase.getSelectedItem().getValue();
			ListadoProdXOrden.add(prod);
			productosClase.remove(prod);
		}
				
		
		public void onClick$btnAgregarTodo()
		{
			
			for(int i=0, j=productosClase.size(); i<j;i++)
			{
				System.out.println("nom prod");
			    System.out.println(productosClase.get(i));
			   
				ListadoProdXOrden.add(productosClase.get(i));
			
			}
			OrdenXProd.setModel(new ListModelList<Producto>());
			productosClase.clear();	
		}
		
	
		public void onClick$btnEliminarTodo()
		{
			for(int i=0, j=ListadoProdXOrden.size(); i<j;i++)
			{
	
				productosClase.add(ListadoProdXOrden.get(i));
			}
			ListadoProdXOrden.clear();	
		}	
		
}
   


